﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;

namespace RDI.Alef
{

    [AttributeUsage(AttributeTargets.Property)]
    public sealed class propriedade : Attribute
    {
        public String campo { get; set; }
        public Boolean chave { get; set; }
        public String descricao { get; set; }
        public Int32 tamanho { get; set; }
        public Boolean obrigatorio { get; set; }
        public Boolean estrangeiro {get; set; }
        public Boolean detalhe { get; set; }

        public propriedade(String xCampo, Boolean xChave = false)
        {
            campo = xCampo;
            chave = xChave;
        }

    }

    [AttributeUsage(AttributeTargets.Property)]
    public sealed class associacao : Attribute
    {
        public String classe { get; set; }
        public String camposChave { get; set; }
        public String apelido { get; set; }
        public Boolean chave { get; set; }

        public String[] listaCamposChave
        {
            get { return camposChave.Split(','); }
        }

        public String escopo { get; set; }

        public associacao(String xCamposChave, String xApelido, Boolean xChave = false)
        {
            camposChave = xCamposChave;
            chave = xChave;
            apelido = xApelido;

        }
    }

    [AttributeUsage(AttributeTargets.Class)]
    public sealed class entidade : Attribute
    {
        public String camposChave { get; set; }
        public String tabela { get; set; }
        public String escopo { get; set; }
        public String apelido { get; set; }
        public String camposInsercao { get; set; }

        public String[] listaCamposChave
        {
            get
            {
                if (camposChave != null)
                    return camposChave.Split(',');
                else
                    return null;
            }
        }

        public String[] listaCamposInsercao
        {
            get
            {
                if (camposInsercao != null)
                    return camposInsercao.Split(',');
                else
                    return null;
            }
        }

        public entidade(String tabela, String camposChave)
        {
            this.tabela = tabela;
            this.camposChave = camposChave;
        }
    }

}
